Gmsh & OpenFOAMで流れ場データ作成
PINNsなどを除く大半の流れ場予測モデルでは教師データが必要となる.データ1つ1つを手動で作成するのは非現実的なのでスクリプトで実行すると便利.ここでは,円柱周りの非定常非圧縮性流れのデータをGmshとOpenFOAMを使って作成する方法を紹介する.いずれもPythonで実行できる.
環境構築
OpenFOAM(ここではv2406)とPythonライブラリのgmsh, PyFoamが必要.OpenFOAM2406のインストール手順
各ライブラリは以下でインストール可能.
$ pip3 install gmsh
$ pip3 install PyFoam
実行方法
①パラメータ作成:generate_params.py
円柱の位置と半径,流入速度をランダムに与える.各ケースのパラメータをjson形式で個別に出力する.
②Gmshでメッシュ生成:gmsher.py
外枠作成→円柱作成→メッシュサイズ設定→境界層設定→境界定義→msh形式でメッシュ出力
③OpenFOAMで流体計算:openfoamer.py
各種設定ファイル作成→メッシュ読み込み→境界条件編集→計算実行
実行結果例
①パラメータ作成
code:case0.json
{
"rectangle_x": 1.6,
"rectangle_y": 0.41,
"cylinder_radius": 0.05694619197355619,
"cylinder_center_x": 0.3760629395733296,
"cylinder_center_y": 0.1875174422525385,
"inlet_velocity": 0.9458865003910399,
"nu": 1.5e-05,
"Re": 7181.951231528452
}
②メッシュ生成
case0.msh
https://scrapbox.io/files/67d80346169f5094a386d8e7.png
③流体計算
https://scrapbox.io/files/67d803490b8277e21404e9d7.gif
参考サイト
Gmsh公式ドキュメント
Gmshチュートリアルなど
Gmshで三次元円柱周りの領域を作成
おまけ
斜め楕円でもやろうとしたがgmshToFoamが実行できなかったので諦め中.以下はその残骸.一応メッシュの生成までは出来ている.
①パラメータ作成:generate_params_ellipse.py
②メッシュ生成:gmsher_ellipse.py
kimra.iconパラメータ範囲やGmsh・OpenFOAMの各種設定値は適宜調整してください.